__author__ = 'hc'
#coding:utf-8


# Python基础 03 序列

'''
sequence 序列

sequence(序列)是一组有顺序的元素的集合

(严格的说，是对象的集合，但鉴于我们还没有引入“对象”概念，暂时说元素)
'''

'''
序列可以包含一个或多个元素，也可以没有任何元素。

我们之前所说的基本数据类型，都可以作为序列的元素。元素还可以是另一个序列，以及我们以后要介绍的其他对象。
'''


'''
序列有两种：tuple（定值表； 也有翻译为元组） 和 list (表)
'''

s1 = (2, 1.3, 'love', 5.6, 9, 12, False)         # s1是一个tuple


s2 = [True, 5, 'smile']                          # s2是一个list


print s1,type(s1)


print s2,type(s2)

'''
tuple和list的主要区别在于，一旦建立，tuple的各个元素不可再变更，而list的各个元素可以再变更。


一个序列作为另一个序列的元素
'''

s3 = [1,[3,4,5]]

'''
空序列
'''
s4 = []



'''
元素的引用
'''
'''
序列元素的下标从0开始：
'''
print s1[0]
print s2[2]
print s3[1][2]

'''
由于list的元素可变更，你可以对list的某个元素赋值：
'''
s2[1] = 3.0

print s2
'''
如果你对tuple做这样的操作，会得到错误提示。

所以，可以看到，序列的引用通过s[<int>]实现， int为下标
'''

'''
其他引用方式

范围引用： 基本样式[下限:上限:步长]
'''
print s1[:5]             # 从开始到下标4 （下标5的元素 不包括在内）

print s1[2:]             # 从下标2到最后

print s1[0:5:2]          # 从下标0到下标4 (下标5不包括在内)，每隔2取一个元素 （下标为0，2，4的元素）

print s1[2:0:-1]         # 从下标2到下标1
'''
从上面可以看到，在范围引用的时候，如果写明上限，那么这个上限本身不包括在内。

尾部元素引用
'''''
print s1[-1]             # 序列最后一个元素

print s1[-3]             # 序列倒数第三个元素
'''
同样，如果s1[0:-1], 那么最后一个元素不会被引用 （再一次，不包括上限元素本身）
'''

'''
字符串是元组

字符串是一种特殊的元素，因此可以执行元组的相关操作。
'''
str = 'abcdef'

print str[2:4]


'''
总结

tuple元素不可变，list元素可变

序列的引用 s[2], s[1:8:2]

字符串是一种tuple

'''

